G_DEFINE_TYPE(GtkMenuButton, gtk_menu_button, GTK_TYPE_TOGGLE_BUTTON)
+static void gtk_menu_button_constructed (GObject *object);
static void gtk_menu_button_dispose (GObject *object);
static void
gobject_class->set_property = gtk_menu_button_set_property;
gobject_class->get_property = gtk_menu_button_get_property;
+ gobject_class->constructed = gtk_menu_button_constructed;
gobject_class->dispose = gtk_menu_button_dispose;
widget_class->state_flags_changed = gtk_menu_button_state_flags_changed;
P_("The direction the arrow should point."),
GTK_TYPE_ARROW_TYPE,
GTK_ARROW_DOWN,
- G_PARAM_READWRITE));
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
}
static void
menu_button->priv = priv;
priv->arrow_type = GTK_ARROW_DOWN;
- add_arrow (menu_button);
-
gtk_widget_set_sensitive (GTK_WIDGET (menu_button), FALSE);
}
priv->arrow_type = direction;
- /* Is it custom content? We don't change that */
child = gtk_bin_get_child (GTK_BIN (menu_button));
+ if (child == NULL)
+ return;
+
+ /* Is it custom content? We don't change that */
if (priv->arrow_widget != child)
return;
return menu_button->priv->arrow_type;
}
+static void
+gtk_menu_button_constructed (GObject *object)
+{
+ GtkMenuButton *button = GTK_MENU_BUTTON (object);
+
+ if (button->priv->arrow_type != GTK_ARROW_NONE)
+ add_arrow (button);
+
+ G_OBJECT_CLASS (gtk_menu_button_parent_class)->constructed (object);
+}
+
static void
gtk_menu_button_dispose (GObject *object)
{